package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup

//声明互斥锁
var mu sync.Mutex

var num = 0

//不建议全局变量在协程中使用
func Count() {
	mu.Lock()         //加锁
	defer mu.Unlock() //解锁
	defer wg.Done()   //标记任务完成
	num++
}

func main() {

	wg.Add(10000)
	for i := 0; i < 10000; i++ {
		go Count()
	}
	wg.Wait()
	fmt.Println(num)
}
